home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / snap.arc / SNAP.DOC < prev    next >
Text File  |  1986-08-23  |  38KB  |  1,371 lines

  1.                                   SNAP!
  2.  
  3.                dBASE II and dBASE III Documentation System
  4.                    Written by Walter J. Kennamer 74025,514
  5.  
  6.  
  7.  
  8. ╔════════════════════════════════════════════════════════════════════════╗
  9. ║  Copyright (c) 1986 by Walter J. Kennamer                              ║
  10. ║  All rights reserved.                                                  ║
  11. ║                                                                        ║
  12. ║ The accompanying software and this documentation may be used and       ║
  13. ║ reproduced without charge; except it may not be sold, and may only be  ║
  14. ║ distributed intact.                                                    ║
  15. ║                                                                        ║
  16. ║ These are provided as is, without warranty of any kind.                ║
  17. ║                                                                        ║
  18. ╚════════════════════════════════════════════════════════════════════════╝
  19.  
  20.  
  21. SNAP! makes documenting dBASE II and dBASE III programs a snap.  Written in 
  22. Turbo Pascal, SNAP! is designed to produce technical documentation for an 
  23. entire dBASE system, including:
  24.  
  25.     Variable cross-reference reports
  26.     Tree structure of program and database usage
  27.     Data dictionary
  28.     Index file summary
  29.     Format file summary
  30.     Report form summary
  31.     Procedure file summary (dBASE III only)
  32.     Formatted source code listings
  33.  
  34. In addition, on each program file, SNAP! can write a heading showing:
  35.  
  36.     Program name
  37.     System name
  38.     Author and copyright notice
  39.     Which files call this program 
  40.     Which files this program calls
  41.     Databases used
  42.     Index files used
  43.     Formats used
  44.     Report forms used
  45.     Procedures
  46.     Memory files used
  47.  
  48. Also, SNAP! can indent your source code and capitalize dBASE key words to 
  49. make your code easier to read, understand and maintain.
  50.  
  51. Unlike many other dBASE documentation systems, SNAP! documentation is 
  52. system-wide.  In other words, not only can it tell you where variable X was 
  53. used in a particular program, it can cross-reference all occurrences of 
  54. variable X anywhere in the program system you are documenting.  You merely 
  55. enter the "top" program file name, and SNAP! does the rest.  Of course, you 
  56. may also document a single program if you wish.
  57.  
  58.  
  59.                              Getting Started
  60.  
  61. First, make a backup copy of your program files.  I have tried to test 
  62. SNAP! on a variety of hardware and software combinations, and there 
  63. shouldn't be any danger, but I would feel awful if anyone lost program 
  64. files due to some curious combination of resident programs, unusual 
  65. equipment and sunspot activity, not to mention (gasp!) "features." 
  66.  
  67. Basic Operation
  68.  
  69.  
  70. SNAP! is very easy to use.  If you accept the program's default options, 
  71. you only have to enter the following information on the Top file screen:
  72.  
  73.     "Top" file name
  74.     System name
  75.     Author
  76.     Paths for input, output files and SNAP! overlay files
  77.  
  78. You can press F4 to view the other options, or F2 to begin documenting 
  79. right away.  The line at the bottom of the screen tells you which function 
  80. keys are active.  At any point, you can press the F1 key to receive 
  81. context-sensitive help.  Help is available for each field.
  82.  
  83. The SNAP! system is composed of the following files:
  84.     SNAP.COM      -- main program file
  85.     SNAP.00x      -- one or more overlays, starting with SNAP.000
  86.     SNAP.HLP      -- help file
  87.     SNAP.DOC      -- this documentation file
  88.     DBxWORDS.TXT  -- key word files
  89.  
  90.  
  91. Searching the Program Tree
  92.  
  93. SNAP! assumes that you want to document not only the Top file, but all 
  94. programs it calls, all programs called by programs that Top calls, and so 
  95. on.  In fact, SNAP! will search the program tree for all programs, 
  96. databases, index files, report forms, format files and memory files as it 
  97. prepares system documentation.  You never need to specify more than the top 
  98. program file name.  
  99.  
  100. If you choose not to search the tree, only the specific file you enter will 
  101. be documented.  Thus, you can limit documentation to a particular file or a 
  102. branch of the program tree by varying either the file you input as Top or 
  103. the search tree parameter.
  104.  
  105. Note that SNAP! does not track "SET DEFAULT TO x" statements, but always 
  106. expects to see files with no drive designations on the default drive.  
  107.  
  108.  
  109. Author and Copyright Holder
  110.  
  111. Enter the author and copyright holder in these fields.  This information is 
  112. used only in the program headings, and may be omitted if you choose not to 
  113. write program headings (you make that choice on the Options screen--the one 
  114. after the Top file menu).  If you enter either author or holder, but not 
  115. both, the program assumes that they are the same.
  116.  
  117.  
  118. Paths
  119.  
  120. The Top file menu screen has three fields for path information--the path to 
  121. the input, output and overlay files.  Your response should be a valid 
  122. MS-DOS path, with or without drive designation.  It doesn't matter if you 
  123. omit the final backslash (e.g., C:\SNAP is valid, as is C:\SNAP\ or \SNAP).
  124.  
  125.  
  126. SNAP! looks for its help file, SNAP.HLP, in the same directory as the SNAP! 
  127. overlays.
  128.  
  129. If the "Top" file you specify cannot be found, or if the overlay files are 
  130. not where you say they are, SNAP! exits back to DOS.  If the output 
  131. directory does not exist, SNAP! will create it.
  132.  
  133. If your input and output paths are different, SNAP! will not modify your 
  134. original source code files in any way.  Only the output files will contain 
  135. capitalized key words, indents, headings and so on.  
  136.  
  137. On the other hand, if the input and output paths are the same, SNAP! adds 
  138. .BAK extensions to your original input Cfiles and creates modified output 
  139. files with the original names.  For example, if one of your input programs 
  140. was named EDIT.PRG, after running SNAP! it will be called EDIT.BAK and a 
  141. new, modified EDIT.PRG will be in the directory.  This scheme works fine as 
  142. long as all your input files have unique names (not counting the 
  143. extension).  Otherwise, all but the last non-unique input file will be lost 
  144. (though the modified output files will still be there).  The best idea is 
  145. never to direct output to the input directory if the first eight characters 
  146. of all of your program files are not unique.
  147.  
  148. SNAP! never modifies database, index, format, form or memory files.
  149.  
  150. dBASE II or dBASE III?
  151.  
  152. At the bottom of the Top file menu, SNAP! asks if this is a dBASE III 
  153. system.  SNAP! needs this information since dBASE III uses a different 
  154. internal format for database and index files, as well as different key 
  155. words.  The current version of SNAP! cannot read Clipper index files, but 
  156. otherwise will handle Clipper source code and databases without 
  157. difficulty.  SNAP! will automatically detect Foxbase index files and 
  158. document them properly.
  159.  
  160. Ignoring Drive Designations
  161.  
  162. Sometimes you may want SNAP! to disregard explicit drive designations when 
  163. searching for program or other files.  A choice off the options menu (the 
  164. second screen after the greeting) instucts SNAP! to drop any drive 
  165. designations before attempting to find a file.  As an example, you may have 
  166. written a backup routine to copy a database to B:BACKUP.DBF.  If you would 
  167. like SNAP! not to try to find that file on the B: drive, choose the option 
  168. to ignore drive designations.
  169.  
  170. Saving Default Choices
  171.  
  172. As you use SNAP!, you may wish to modify the default values for certain 
  173. fields.  For example, you may want to set the overlay path to \SNAP, or the 
  174. author and copyright holder to your name.  Press F5 to save the current 
  175. values of each field in a file named SNAP.CFG.  If SNAP! finds this file in 
  176. the current directory when you start the program, its values will be 
  177. entered as defaults.  Otherwise, if SNAP.CFG does not exist or cannot be 
  178. found, SNAP! resorts to standard default values.
  179.  
  180.  
  181.  
  182.  
  183.                              Status Reports
  184.  
  185. As SNAP! documents your programs, it updates a status screen that tells you 
  186. how much progress it has made.  The screen shows the file that SNAP! is 
  187. currently documenting, the number of lines in the file, and the pass 
  188. number.  (If a file is called from more than one parent file, it may need 
  189. to be documented more than once.  The pass number tells you how many passes 
  190. SNAP! has made through an individual program.  It should not normally be 
  191. greater than 2 or 3.)  
  192.  
  193. In addition, if you choose any option that modifies source code (heading, 
  194. indentation, key word capitalization) or if you choose to display the 
  195. cross-reference report, SNAP! will display a more elaborate screen 
  196. indicating how many programs, databases, indexes, format files, report 
  197. forms and variables it has found, along with the total number of program 
  198. lines documented so far, and the amount of free memory available.
  199.  
  200. If SNAP! identifies any errors during its run, it will print a brief error 
  201. message in a separate window in the upper right corner of the screen.  All 
  202. error messages are also echoed to the ERROR.DOC file.
  203.  
  204.  
  205.  
  206.  
  207.                            Reports and Outputs
  208.  
  209.  
  210. SNAP! can produce any combination of several reports.  Each report is 
  211. optional and can be selected or supressed on the Options Screen.  However, 
  212. some reports (e.g. Data dictionary, Index summary) require you to search 
  213. the tree rather than document a single program.
  214.  
  215. SNAP! does not attempt to resolve macro substitutions.  For example, if it 
  216. sees a macro where it expects a database, it reports the macro as a 
  217. database name.  It is your responsibility to identify what value the macro 
  218. might have at run time.  The exception to this general rule is that SNAP! 
  219. will try to remove macros that look like drive or path designations.  For 
  220. example, if the following statement is in one of your programs:
  221.  
  222.     USE &MPATH.DATABASE
  223.  
  224. SNAP! will detect the macro and remove it before trying to find 
  225. DATABASE.DBF.
  226.  
  227. Each report, other than a file heading, is displayed on the screen as it is 
  228. echoed to a file.  The program contains default filenames (e.g., XREF.DOC 
  229. for the cross-reference report), but you can change them if you wish.
  230.  
  231.  
  232. File Headings
  233.  
  234.  
  235.  
  236. One of the most useful SNAP! outputs is a heading written to each file in 
  237. the system.  Each heading indicates:
  238.  
  239.     Program name
  240.     System name
  241.     Copyright notice
  242.     Author
  243.     Which programs this program calls
  244.     Which programs call this program
  245.     Databases, index files, report forms, format files and memory
  246.          files used by this program
  247.     Date and time documented.
  248.  
  249. A sample heading is included in Appendix A.  The sample heading indicates 
  250. that TODOINP.PRG is called by TODOMENU, calls TIME and TESTDATE, uses a 
  251. file whose name is contained in S:TDFILE with index TODO, and also uses the 
  252. TODOINP format file.  The heading also indicates the system name, author, 
  253. copyright and date documented.  You may want to add more information to the 
  254. header, such as a brief narrative description of the program's purpose.
  255.  
  256. If you choose to write headings on your source code files (or if you choose 
  257. any other option that modifies the source code file), it is a good idea to 
  258. send the output files to a different directory than the input files so that 
  259. your original source code remains unchanged.
  260.  
  261. If you choose to send output files to the input directory, your original 
  262. source code file will be renamed with a .BAK extension.  If you use 
  263. extensions to distinguish between program files, some of your original 
  264. source code files could be destroyed.  For example, if your system uses the 
  265. following program file names:
  266.  
  267.     SYSTEM.INP
  268.     SYSTEM.EDT
  269.     SYSTEM.RPT
  270.     SYSTEM.DEL
  271.  
  272. and so on, the output files containing the headings will retain these 
  273. names.  Each of the input files, however,  will have been renamed to a file 
  274. called SYSTEM.BAK, and only the last one will still exist when SNAP! 
  275. completes.  Therefore, you should send output files to a separate 
  276. subdirectory if you use this naming convention.
  277.  
  278. As always, you should make regular backups, and you should be especially 
  279. careful to make a full backup of all your files before running SNAP!.
  280.  
  281.  
  282. Source Code Formatting Options
  283.  
  284.  
  285. SNAP! can also help format your source code to make it easier to read.  
  286. SNAP! can recognize dBASE control structures and indent the program 
  287. statements underneath them.  All indentation is done with tab characters, 
  288. one per level.  Most text editors and word processors allow you to 
  289. determine the number of spaces per tab, so the actual appearance of the 
  290.  
  291. code is still under your control.  In addition, should you choose to use 
  292. SNAP!'s source code printing routines, you can select the number of spaces 
  293. to be inserted for each tab as the code prints.
  294.  
  295. If you choose the indentation option, SNAP! will also scan your code for 
  296. mismatched control structure terminators.  For example, if your code has 
  297. the following sequence:
  298.  
  299.  
  300.    DO WHILE T
  301.       statements
  302.           .
  303.           .
  304.           .
  305.       IF X = Y 
  306.          .
  307.          .
  308.       ENDIF
  309.    ENDIF
  310.  
  311.  
  312. SNAP! will detect that the final statement should have been an ENDDO 
  313. instead of an ENDIF and will display an appropriate error message.
  314.  
  315. SNAP! will also capitalize dBASE key words found in your source code.  Key 
  316. words are stored in a file called DBxWORDS.TXT where x is a 2 or a 3 
  317. depending on the version of dBASE you are using (you can also specify 
  318. another file).   SNAP! does not attempt to parse code statements to 
  319. determine how a word is used, so if you use key words as variable or field 
  320. names, they will also be capitalized.  Should you wish not to capitalize a 
  321. particular key word, you can either delete it from the DBxWORDS.TXT file, 
  322. or "comment it out" by putting an asterisk before it in the file  (e.g. 
  323. RELEASE becomes *RELEASE).  
  324.  
  325. The key word file should contain one key word per line.  Capitalization and 
  326. order do not matter, though SNAP! runs marginally faster if the words are 
  327. alphabetized.
  328.  
  329. By inserting the correct characters in the key word file, you can cause 
  330. certain key words or variables to be handled differently than normal.  The 
  331. following characters have a special meaning in the key word file when 
  332. inserted immediately before a word:
  333.  
  334.     *    Comments out the word.  SNAP! acts as if it were not in the key 
  335.          word file at all.
  336.     !    Capitalize, but do no cross-reference even when the option to 
  337.          cross-reference key words is in effect.  You may want to use this 
  338.          character for often-used but uninteresting key words such as TO 
  339.          or, perhaps, SAY.
  340.     @    Capitalize and always cross-reference this word, even when the 
  341.          option to cross-reference key words is not in effect.  You might 
  342.          want to use this for especially important key words such REPLACE, 
  343.          SAVE, or QUIT.
  344.  
  345.  
  346.     %    Neither capitalize nor cross-reference, regardless of whether the 
  347.          options to capitalize or cross-reference key words are in 
  348.          effect.  You may want to use this character for variables that 
  349.          you use frequently, but that you are not interested in 
  350.          cross-referencing--perhaps "i", "choice", "action", or "lineno".  
  351.          This will keep them from cluttering up the cross-reference report.
  352.  
  353. The following examples illustrate how to use these special characters:
  354.  
  355.     *note
  356.     !SAY
  357.     @REPLACE
  358.     %CHOICE
  359.  
  360.  
  361. Tree Structure Diagram
  362.  
  363. If you choose the default option of documenting all programs in the tree, 
  364. SNAP! will produce a chart showing which programs call which other programs 
  365. and which programs use which databases.  The tree diagram, like other SNAP! 
  366. reports, appears on the screen and is echoed to a file (default name of 
  367. TREE.DOC).
  368.  
  369. While file names listed in the tree contain extensions, you can quickly 
  370. tell which files are databases by the arrow ( --> ) just to the left of the 
  371. filename.
  372.  
  373. The tree report is illustrated in Appendix A.
  374.  
  375.  
  376. Data Dictionary
  377.  
  378. The data dictionary report contains two parts: 1) the database structure 
  379. for each database in the system and a list of programs which use it; and 2) 
  380. a listing of each data field in the system and the databases that contain 
  381. it.
  382.  
  383. SNAP! identifies databases in three ways: 
  384.  
  385.     1)   USE statements, but only those followed by a database name; 
  386.     2)   COPY TO statements, including COPY TO ... SDF.  If the command 
  387.          copies to an SDF file that does not have an explicit extension, 
  388.          SNAP! supplies .TXT, otherwise SNAP! assumes databases to have 
  389.          .DBF extensions.
  390.     3)   DELETE FILE xxx.DBF
  391.  
  392. A statement that tests for the existence of a database (e.g. IF 
  393. FILE("xyz")) will not by itself be identified as a database reference.
  394.  
  395. A sample data dictionary report is included in appendix A.
  396.  
  397.  
  398. Index File Summary
  399.  
  400.  
  401. The index file summary lists each index file referenced in the system and 
  402. attempts to show the fields it is indexed on and the files that use it.  
  403. Clipper index files are in a different format than dBASE3 and are not 
  404. recognized by SNAP!  Foxbase index files are detected and documented.
  405.  
  406. SNAP! identifies indexes in four ways: 
  407.  
  408.     1)   INDEX ON xyz TO indexfile
  409.     2)   USE xyz INDEX indexfile1,indexfile2,indexfile3 ...
  410.     3)   SET INDEX TO indexfile1,indexfile2,indexfile3 ...
  411.     4)   DELETE FILE xyz.NDX
  412.  
  413. In cases 2 and 3, each index file will be separately identified and 
  414. documented.  
  415.  
  416. A statement that tests for the existence of an index (e.g. IF 
  417. FILE("xyz.NDX")) will not by itself be identified as an index reference.
  418.  
  419. A sample index file summary in shown in Appendix A.
  420.  
  421.  
  422. Format File Summary
  423.  
  424. SNAP! also produces a report showing each format file used in the system 
  425. and the programs that call it.  A sample report is in Appendix A.
  426.  
  427. SNAP! identifies format files in two ways: 
  428.  
  429.     1)   SET FORMAT TO xyz
  430.     2)   DELETE FILE xyz.FMT
  431.  
  432. In case 1, if this is a dBASE II system, SET FORMAT TO SCREEN and SET 
  433. FORMAT TO PRINT are not flagged as references to format files.
  434.  
  435. A statement that tests for the existence of an format (e.g. IF 
  436. FILE("xyz.FMT")) will not by itself be identified as an format reference.
  437.  
  438. Report Form Summary
  439.  
  440. SNAP! also produces a report showing each report form used in the system 
  441. and the programs that call it.  A sample report is in Appendix A.
  442.  
  443. SNAP! identifies report forms in two ways: 
  444.  
  445.     1)   REPORT FORM xyz ...
  446.     2)   DELETE FILE xyz.FRM
  447.  
  448. A statement that tests for the existence of an form (e.g. IF 
  449. FILE("xyz.FRM")) will not by itself be identified as an report form 
  450. reference.
  451.  
  452.  
  453. Variable Cross-Reference Report
  454.  
  455.  
  456.  
  457. Another useful report available through SNAP! is a variable cross-reference 
  458. listing, showing line numbers for each program that references a particular 
  459. variable.  'Variable' in this context includes field names, file names and 
  460. anything else that isn't a key word, numeric constant, punctuation mark or 
  461. quoted string. 
  462.  
  463. If elect ot display the variable cross-reference report (by responding 'Y' 
  464. to the question on the options menu), you can view the Cross-reference 
  465. Options Screen (press F4 from the options menu).  The Cross-reference 
  466. Options Screen allows you to select the type of "things" that will included 
  467. on the cross-reference report.  If this is a dBASE III system, you will 
  468. have the option to include only PUBLIC variables.  You also get the 
  469. following choices, regardless of whether this is a dBASE II or a dBASE III 
  470. program:
  471.  
  472.     Include other variables and tokens
  473.     Include key words
  474.     Include numeric constants
  475.  
  476. Your responses to these prompts (and your use of special characters in the 
  477. key words file) determine which words will Cappear on the cross-reference 
  478. report.
  479.  
  480. The cross-reference report interacts closely with the key word file.  
  481. Specifically, the key word file is how SNAP! can tell what is a key word 
  482. and what is not.  Additionally, by inserting the correct characters in the 
  483. key word file, you can cause certain key words or variables to be handled 
  484. differently than usual.  The following characters have a special meaning in 
  485. the key word file when inserted immediately before a word:
  486.  
  487.     *    Comments out the word.  SNAP! acts as if it were not in the key 
  488.          word file at all.
  489.     !    Capitalize, but do no cross-reference even when the option to 
  490.          cross-reference key words is in effect.  You may want to use this 
  491.          character for often-used but uninteresting key words such as TO 
  492.          or, perhaps, SAY.
  493.     @    Capitalize and always cross-reference this word, even when the 
  494.          option to cross-reference key words is not in effect.  You might 
  495.          want to use this for especially important key words such REPLACE, 
  496.          SAVE, or QUIT.
  497.     %    Neither capitalize nor cross-reference, regardless of whether the 
  498.          options to capitalize or cross-reference key words are in 
  499.          effect.  You may want to use this character to designate 
  500.          variables that you use frequently, but that you are not 
  501.          interested in cross-referencing--perhaps "i", "choice", "action", 
  502.          or "lineno".
  503.  
  504. The following examples illustrate how to use these special characters:
  505.  
  506.     *note
  507.     !SAY
  508.     @REPLACE
  509.     %CHOICE
  510.  
  511. A sample cross-reference report is included in Appendix A.
  512.  
  513.  
  514. Source Code Printout
  515.  
  516.  
  517. When you have completed your program, you will probably want a listing of 
  518. the source code to accompany the rest of your documentation.  SNAP! 
  519. provides a facility for formatting and printing dBASE source code files, 
  520. and gives you a great deal of control over source code format.  You can set 
  521. the following parameters:
  522.  
  523.     Line width
  524.     Page length
  525.     Left and right margins
  526.     Top and bottom margins
  527.     Spaces per tab
  528.  
  529.     Include or suppress line numbers
  530.     Printer setup string
  531.  
  532. For example, you can set these values to leave plenty of room on the left 
  533. side of the page so that your code will fit in a 3-ring binder.  
  534.  
  535. If a line of code exceeds the line width minus left and right margins, 
  536. SNAP! will wrap it on the printout without messing up the page breaks.  
  537. SNAP! also appropriately counts the wrapped line as one source code line, 
  538. so that your cross-reference report still matches the printout.
  539.  
  540. Each page of the printout contains a header showing the program name, 
  541. system name, copyright notice, page number and date/time printed.  The 
  542. programs are printed in alphabetical order.  
  543.  
  544. This section of SNAP! will revert to default values if you enter an invalid 
  545. set of parameters.  For example, if the sum of your left and right margins 
  546. exceeds your line width, SNAP! will set the line width and the margins to 
  547. their default values.  Similarly, SNAP! will reject top and bottom margins 
  548. greater than page length, negative values, tab expansions greater than 12 
  549. spaces, and so on.
  550.  
  551. SNAP! prints a three-line heading on each page of the printout, showing 
  552. program name, system name, copyright holder, date, time, and page number.  
  553. The heading begins on the line immediately following the top margin you 
  554. specify.  Accordingly, if you use a top margin of 8 and a bottom margin of 
  555. 8, with 66-line paper only 47 lines of code will be printed on each page 
  556. (66 lines - 8 top margin - 8 bottom margin - 3 heading).
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.                            Program Limitations
  585.  
  586.  
  587. SNAP! had the following design limitations when this documentation was 
  588. written:
  589.  
  590.              Maximum program files:     256 in total, 64 called from a  
  591.                                                                         given file
  592.                Maximum other files:    128 of each type (e.g. databases)
  593.                  Maximum variables:    999 throughout the system
  594.   Maximum references to a variable:    128 per variable
  595.                  Maximum key words:    400 words
  596.         Maximum length of key word:     15 characters
  597.          Maximum levels of nesting:     20 levels
  598.  Maximum number of database fields:    256 throughout the system
  599.         Maximum length of filename:     16 characters (including path)
  600.  
  601. These limitations are current as of March 31, 1986.  You can verify them 
  602. (it would be a good idea) by viewing the program limitations screen (Press 
  603. F1 twice from the greeting screen).
  604.  
  605. For example, the total number of different fields in all the databases used 
  606. in the system cannot exceed 256.  In practice, the limit you are most 
  607. likely to encounter is the maximum number of references to a particular 
  608. variable.  Additional references generate a warning message and are not 
  609. included in the cross-reference report, but otherwise do not hurt anything.
  610.  
  611.  
  612.                             ACKNOWLEDGMENTS
  613.  
  614.  
  615. Special thanks to the following for help designing and testing SNAP!:
  616.    Paul Ferrara
  617.    Peter Petto
  618.    Dirk Gastaldo
  619.    Opher Jackson
  620.    Spence Lloyd
  621.    Tom McSharry
  622.    Marianne van Lier
  623.  
  624. -------------------------------------------------------------------------------
  625.  
  626.  
  627.                       Appendix A -- Sample Reports
  628.  
  629.  
  630. File Header
  631.  
  632.  
  633. *:*********************************************************************
  634. *:
  635. *:      Program: TODOINP.PRG
  636. *:
  637. *:       System: TODO Management System
  638. *:       Author: Walter J. Kennamer
  639. *:    Copyright (c) 1984, Walter J. Kennamer
  640. *:
  641. *:    Called by: TODOMENU.PRG
  642. *:
  643. *:        Calls: TIME.PRG
  644. *:             : TESTDATE.PRG
  645. *:
  646. *:         Uses: &S:TDFILE.DBF
  647. *:
  648. *:      Indexes: &S:DDNDX.NDX
  649. *:
  650. *:      Formats: TODOINP.FMT
  651. *:
  652.  
  653. *: Documented: 2/15/86       14:19
  654. *:*********************************************************************
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708. Tree Diagram
  709.  
  710. System: TODO Management System
  711. Author: Walter J. Kennamer                      
  712. Tree Diagram for databases and program files.
  713. Date: 2/15/86
  714. Time: 14:22
  715.  
  716.  
  717. ---------------------------------------------------------------------------TO
  718. DO.PRG
  719.      TODOMENU.PRG
  720.        -->&S:TDFILE.DBF
  721.           VERSION.PRG
  722.           TDLOGO.PRG
  723.           DEFAULT.PRG
  724.           TDSETUP.PRG
  725.             -->TODO.SKL
  726.             -->&S:TDFILE.DBF
  727.           GETDATE.PRG
  728.           TIME.PRG
  729.           TODOINP.PRG
  730.             -->&S:TDFILE.DBF
  731.                TIME.PRG
  732.                TESTDATE.PRG
  733.           TODOEDIT.PRG
  734.                TIME.PRG
  735.                TDMARK.PRG
  736.                  -->&S:TDFILE.DBF
  737.                     TIME.PRG
  738.                     NUMLIST.PRG
  739.                TDEDIT.PRG
  740.                  -->&S:TDFILE.DBF
  741.                     TIME.PRG
  742.                     DELSKIP.PRG
  743.                     EDITEXIT.PRG
  744.                     ISEARCH.PRG
  745.                     TESTDATE.PRG
  746.                     EDITSRCH.PRG
  747.                          NUMLIST.PRG
  748.                          TIME.PRG
  749.                     EDITCHGE.PRG
  750.                     EDITDEL.PRG
  751.                          ISEARCH.PRG
  752.                          DELSKIP.PRG
  753.                TDBROWSE.PRG
  754.                  -->&S:TDFILE.DBF
  755.                TDPURGE.PRG
  756.                  -->HIST.DBF
  757.                  -->TODO.SKL
  758.                  -->&S:TDFILE.DBF
  759.                TDREDATE.PRG
  760.                  -->&S:TDFILE.DBF
  761.                TDCALPRM.PRG
  762.                  -->PRM.SKL
  763.  
  764.                  -->CAL.PRM
  765.                EDITHELP.PRG
  766.           TODOPRT.PRG
  767.                TIME.PRG
  768.                PRTUNCMP.PRG
  769.                  -->&S:TDFILE.DBF
  770.                     PRINTER.PRG
  771.                     LATECOMP.PRG
  772.                PRTCMP.PRG
  773.                  -->&S:TDFILE.DBF
  774.                     PRINTER.PRG
  775.                SCREENPRT.PRG
  776.                  -->&S:TDFILE.DBF
  777.                TODOCAL.PRG
  778.                  -->&S:TDFILE.DBF
  779.                     PRINTER.PRG
  780.                TDCALPRM.PRG
  781.                  -->PRM.SKL
  782.                  -->CAL.PRM
  783.                VERPRT.PRG
  784.                  -->PRM.SKL
  785.                TDALARM.PRG
  786.                  -->&S:TDFILE.DBF
  787.           DISPCAL.PRG
  788.           TODOFIX.PRG
  789.             -->&S:TDFILE.DBF
  790.             -->TEMP.DBF
  791.                TIME.PRG
  792.           TDALARM.PRG
  793.             -->&S:TDFILE.DBF
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819. Data Dictionary
  820.  
  821.  
  822. System: TODO Management System
  823. Author: Walter J. Kennamer
  824. Database Structure Summary
  825. Date: 2/15/86
  826. Time: 14:22
  827.  
  828.  
  829. --------------------------------------------------------------------------
  830.  
  831.    File not found--&S:TDFILE.DBF
  832.  
  833. Used by: TODOMENU.PRG
  834. Used by: TDSETUP.PRG
  835. Used by: TODOINP.PRG
  836. Used by: TODOFIX.PRG
  837. Used by: TDALARM.PRG
  838. Used by: TDMARK.PRG
  839. Used by: TDEDIT.PRG
  840. Used by: TDBROWSE.PRG
  841. Used by: TDPURGE.PRG
  842. Used by: TDREDATE.PRG
  843. ** Total **                       92
  844.  
  845. Used by: TODOFIX.PRG
  846.  
  847. -------------------------------------------------------------------------
  848.  
  849.  
  850. Structure for database : PRM.SKL
  851. Number of data records :      20
  852. Date of last update    :  1/ 7/86
  853. Field  Field name  Type        Width    Dec
  854.     1  LINE        Character      80
  855. ** Total **                       81
  856.  
  857. Used by: TDPURGE.PRG
  858.  
  859. -------------------------------------------------------------------------
  860.  
  861.  
  862.    File not found--TEMP.DBF
  863.  
  864. Used by: TDCALPRM.PRG
  865. Used by: VERPRT.PRG
  866.  
  867. ---------------------------------------------------------------------------
  868.  
  869. Structure for database : TODO.SKL
  870. Number of data records :       0
  871. Date of last update    :  2/18/85
  872. Field  Field name  Type        Width    Dec
  873.  
  874.     1  ITEM        Character      55
  875.     2  PRIORITY    Character       1
  876.     3  COMPLETE    Character       1
  877.     4  DATE:ASGN   Character       8
  878.     5  DATE:DUE    Character       8
  879.     6  DATE:COMP   Character       8
  880.     7  LATE        Numeric         3
  881.     8  ITEMTYPE    Character       1
  882.     9  TIME        Character       5
  883.    10  ALARM       Character       1
  884. ** Total **                       92
  885.  
  886. Used by: TDCALPRM.PRG
  887.  
  888. ---------------------------------------------------------------------------
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929. System: TODO Management System
  930. Author: Walter J. Kennamer
  931. Data Dictionary
  932. Date: 2/15/86
  933. Time: 14:22
  934.  
  935.  
  936. --------------------------------------------------------------------------
  937.  
  938.  
  939. Field Name         Type    Len   Dec     Database 
  940. ALARM               C       1     0     HIST.DBF
  941.                                         TODO.SKL
  942. COMPLETE            C       1     0     HIST.DBF
  943.                                         TODO.SKL
  944. DATE:ASGN           C       8     0     HIST.DBF
  945.                                         TODO.SKL
  946. DATE:COMP           C       8     0     HIST.DBF
  947.                                         TODO.SKL
  948. DATE:DUE            C       8     0     HIST.DBF
  949.                                         TODO.SKL
  950. ITEM                C      55     0     HIST.DBF
  951.                                         TODO.SKL
  952. ITEMTYPE            C       1     0     HIST.DBF
  953.                                         TODO.SKL
  954. LATE                N       3     0     HIST.DBF
  955.                                         TODO.SKL
  956. LINE                C      80     0     PRM.SKL
  957. PRIORITY            C       1     0     HIST.DBF
  958.                                         TODO.SKL
  959. TIME                C       5     0     HIST.DBF
  960.                                         TODO.SKL
  961.  
  962. ---------------------------------------------------------------------------
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984. Index Summary
  985.  
  986. System: TODO Management System
  987. Author: Walter J. Kennamer                      
  988. Index Parameter Summary
  989. Date: 2/15/86
  990. Time: 14:23
  991.  
  992.  
  993. -------------------------------------------------------------------------
  994.  
  995.    File not found--&S:DDNDX.NDX
  996. Used in: TODOMENU.PRG
  997. Used in: TDSETUP.PRG
  998. Used in: TODOINP.PRG
  999. Used in: TODOFIX.PRG
  1000. Used in: TDALARM.PRG
  1001. Used in: TDEDIT.PRG
  1002. Used in: TDBROWSE.PRG
  1003. Used in: TDPURGE.PRG
  1004. Used in: TDREDATE.PRG
  1005. Used in: PRTUNCMP.PRG
  1006. Used in: TODOCAL.PRG
  1007. Used in: EDITEXIT.PRG
  1008. Used in: EDITCHGE.PRG
  1009.  
  1010. --------------------------------------------------------------------------
  1011.    File not found--DATECOMP.NDX
  1012. Used in: TDPURGE.PRG
  1013.  
  1014. --------------------------------------------------------------------------
  1015. HISTDD.NDX -- Indexed on: $(date:due,7,2)+date:due+priority+time
  1016.  
  1017. Used in: PRTCMP.PRG
  1018. Used in: TODOCAL.PRG
  1019.  
  1020. --------------------------------------------------------------------------
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039. Format File Summary
  1040.  
  1041.  
  1042. System: TODO Management System
  1043. Author: Walter J. Kennamer                      
  1044. Format File Summary
  1045. Date: 2/15/86
  1046. Time: 14:23
  1047.  
  1048.  
  1049. -------------------------------------------------------------------------
  1050.  
  1051. TDEDIT.FMT  
  1052. Used in: TODOINP.PRG
  1053.  
  1054. -------------------------------------------------------------------------
  1055. TDMARK.FMT  
  1056. Used in: TDMARK.PRG
  1057.  
  1058. -------------------------------------------------------------------------
  1059. TODOINP.FMT 
  1060. Used in: TDEDIT.PRG
  1061. Used in: EDITSRCH.PRG
  1062.  
  1063. -------------------------------------------------------------------------
  1064.  
  1065.  
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094. Report Form Summary
  1095.  
  1096. System: TODO Management System
  1097. Author: Walter J. Kennamer
  1098. Report Form File Summary
  1099. Date: 2/15/86
  1100. Time: 14:23
  1101.  
  1102.  
  1103. --------------------------------------------------------------------------
  1104.  
  1105. TDDETCO.FRM 
  1106. Used in: PRTUNCMP.PRG
  1107.  
  1108. -------------------------------------------------------------------------
  1109. TDDETIN.FRM 
  1110. Used in: PRTUNCMP.PRG
  1111.  
  1112. -------------------------------------------------------------------------
  1113. TDSUMCO.FRM 
  1114. Used in: PRTCMP.PRG
  1115.  
  1116. -------------------------------------------------------------------------
  1117. TDSUMIN.FRM 
  1118. Used in: PRTCMP.PRG
  1119.  
  1120. -------------------------------------------------------------------------
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149. Procedure Summary
  1150.  
  1151. System: Sample Application
  1152. Author: Walter J. Kennamer
  1153. Procedures Summary
  1154. Date: 2/17/86
  1155. Time: 14:11
  1156.  
  1157.  
  1158. -------------------------------------------------------------------------
  1159.  
  1160. ABC.PRC
  1161.    Contains: RECPRT
  1162.       Called by: ABCMAIN.PRG
  1163.    Contains: PRTHDR
  1164.       Called by: ABC.PRC
  1165.    Contains: SUBHEAD
  1166.       Called by: ABC.PRC
  1167.  
  1168.  
  1169. -------------------------------------------------------------------------
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204. Variable Cross-Reference
  1205.  
  1206. System: Sample Application
  1207. Author: Walter J. Kennamer                            
  1208. Cross-Reference for Non-Keywords
  1209. Date: 2/18/86
  1210. Time: 14:11
  1211.  
  1212.  
  1213. -------------------------------------------------------------------------
  1214.  
  1215. ADVFUNC
  1216.    ABC.PRC          89   89
  1217.  
  1218. AREA
  1219.    ABC.PRC         122
  1220.  
  1221. ARR
  1222.    ABC.PRC         111  112  113  114  115  116  117  118  119
  1223.  
  1224. ARR0
  1225.    ABC.PRC          82
  1226.  
  1227. ARR1
  1228.    ABC.PRC          83
  1229.  
  1230. ARR2
  1231.    ABC.PRC          84
  1232.  
  1233. ARR3
  1234.    ABC.PRC          85
  1235.  
  1236. ARR4
  1237.    ABC.PRC          86
  1238.  
  1239. BASFUNC
  1240.    ABC.PRC          88   88
  1241.  
  1242. COMMENT
  1243.    ABCMAIN.PRG      40   41
  1244.    ABC.PRC         143
  1245.  
  1246. COMNTTYPE
  1247.    ABCMAIN.PRG      41
  1248.    ABC.PRC         142
  1249.  
  1250. COMPATIB
  1251.    ABC.PRC          94   94
  1252.  
  1253. D
  1254.    ABCMAIN.PRG      29
  1255.  
  1256. DEVICE
  1257.    ABCMAIN.PRG      47   53
  1258.  
  1259.  
  1260. D DOLLAR
  1261.    ABC.PRC          41   47  105  107  206
  1262.  
  1263. D TYPE
  1264.    ABC.PRC          41   46   75   76  213  216  219  222  225  228
  1265.                    231  234
  1266.  
  1267. FIELDTEST
  1268.    ABC.PRC          98
  1269.  
  1270. INSTRUCT
  1271.    ABC.PRC          90   90
  1272.  
  1273. LOSS
  1274.    ABC.PRC          91   91
  1275.  
  1276. MANUAL
  1277.    ABC.PRC          87   87
  1278.  
  1279. MESSAGES
  1280.    ABC.PRC          92   92
  1281.  
  1282. MFLDTEST
  1283.    ABC.PRC          99  101  120
  1284.  
  1285. MNAME
  1286.    ABC.PRC         126  130  134
  1287.  
  1288. MTYPE
  1289.    ABC.PRC          41   45   73   78
  1290.  
  1291. NAME
  1292.    ABCMAIN.PRG      41   44
  1293.    ABC.PRC          58  104  126  134  163
  1294.  
  1295. OVERALL
  1296.    ABC.PRC          95   95
  1297.  
  1298. PERFORM
  1299.    ABC.PRC          93   93
  1300.  
  1301. PRICE
  1302.    ABC.PRC         106  109
  1303.  
  1304. PRTHDR
  1305.    ABC.PRC          66  138  167
  1306.  
  1307. QUARTER
  1308.    ABC.PRC         121
  1309.  
  1310. RECPRT
  1311.    ABCMAIN.PRG      51
  1312.    ABC.PRC          30
  1313.  
  1314. ABC.PRC
  1315.  
  1316.    ABCMAIN.PRG      30
  1317.  
  1318. SOFTWARE
  1319.    ABCMAIN.PRG      43   44
  1320.    ABC.PRC          55   58  151  160  163
  1321.  
  1322. SUBHEAD
  1323.    ABC.PRC          74  210
  1324.  
  1325. TCOL
  1326.    ABCMAIN.PRG      37
  1327.    ABC.PRC          41   43   75   76  104  106  109  111  112  113
  1328.                    114  115  116  117  118  119  120  121  122  142  143
  1329.                    184  185  186  187  188  189  190  191  192  193  194
  1330.                    195  196  197  198  199  200  201  202  203  204
  1331.  
  1332. TLINE
  1333.    ABCMAIN.PRG      37
  1334.    ABC.PRC          41   42   65   75   76   77   77  104  106  109
  1335.                    111  112  113  114  115  116  117  118  119  120  121
  1336.                    122  132  132  137  142  143  147  147  155  155  178
  1337.                    184  185  186  187  188  189  190  191  192  193  194
  1338.                    195  196  197  198  199  200  201  202  203  204  205
  1339.                    205
  1340.  
  1341. TPAGECTR
  1342.    ABCMAIN.PRG      37
  1343.    ABC.PRC          41   44  179  179  184
  1344.  
  1345. T ADVFUNC
  1346.    ABC.PRC          89  113
  1347.  
  1348. T BASFUNC
  1349.    ABC.PRC          88  112
  1350.  
  1351. T COMPATIB
  1352.    ABC.PRC          94  118
  1353.  
  1354. T INSTRUCT
  1355.    ABC.PRC          90  114
  1356.  
  1357. T LOSS
  1358.    ABC.PRC          91  115
  1359.  
  1360. T MANUAL
  1361.    ABC.PRC          87  111
  1362.  
  1363. T MESSAGES
  1364.    ABC.PRC          92  116
  1365.  
  1366. T OVERALL
  1367.    ABC.PRC          95  119
  1368.  
  1369. T PERFORM
  1370.    ABC.PRC          93  117
  1371.